package wodegua.d23_test;

import java.time.LocalDate;
import java.util.*;

/**
 * User 实体类，包含如下属性
 * private Longid; //用户id 名
 * private String gender; //性别
 * private LocalDate birthday; //生日
 * 注意需要提供 set和get方法，以及toString方法
 *
 * 新建测试类，类中 main 方法，在方法中完成如下业务逻辑:
 *
 * 业务一:
 * 有如下字符串，里面包含多个用户信息数据，现在需要你解析这个字符串，获取里面的用户数据，并封装到User对象中
 * 多个User对象在添加到List<user>集合中
 * String userstrs="10001:张=::1990-01-01#10002:李四:女:1989-01-09#10003:王元:男:1999-09-09#10004:刘备:男:1899-01-01#10005:孙空:男:1900-01-01#10006:张三:女:1999-01-01#10007:刘备:女:1999-01-01#10008:张三:女:2003-07-01#10009:猪八戒:男:1900-01-01";
 * 注意:
 * 字符串中的规则如下，多个用户用#拼接，用户的信息之间用:拼接。
 * 其中用户id和生日是需要进行类型转换的，其中id需要将String转成Long，生日需要将String转成LocaIDate
 *
 * 业务二:
 * 鸡历上面获取的List<user>集合，统计里面每个名字出现的次数。
 * 封装到Map<String,Integer>集合中，集合的key就是名字，value就是名字出现的次数。
 * 最后遍历打印map数据，打印内容如下:
 * 张三:3次
 */
public class Test02 {
    public static void main(String[] args) {
        String userStr = "10001:张三:男:1990-01-01#10002:李四:女:1989-01-09#10003:王元:男:1999-09-09#10004:刘备:男:1899-01-01#10005:孙空:男:1900-01-01#10006:张三:女:1999-01-01#10007:刘备:女:1999-01-01#10008:张三:女:2003-07-01#10009:猪八戒:男:1900-01-01";
        String[] userStrArray = userStr.split("#");
//        System.out.println(Arrays.toString(userStrArray));

        List<User> list = new ArrayList<>();
        for (String s : userStrArray) {
            String[] userArray = s.split(":");
//            System.out.println(Arrays.toString(userArray));
            User user = new User(Long.valueOf(userArray[0]),userArray[1],userArray[2],LocalDate.parse(userArray[3]));
            list.add(user);
        }
        System.out.println(list);

        Map<String,Integer> map = new HashMap<>();
        list.forEach(v->{
            String name = v.getName();
            if (map.containsKey(name)) {
                map.put(name,map.get(name) + 1);
            } else {
                map.put(name,1);
            }
        });
        map.forEach((k,v)->System.out.println(k + ":" + v + "次"));
    }
}

class User {
    private Long id; //用户id
    private String name; //姓名
    private String gender; //性别
    private LocalDate birthday; //生日

    public User() {
    }

    public User(Long id, String name, String gender, LocalDate birthday) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", birthday=" + birthday +
                '}';
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public LocalDate getBirthday() {
        return birthday;
    }

    public void setBirthday(LocalDate birthday) {
        this.birthday = birthday;
    }
}
